[アップデート] Amazon Elasticsearch Service でアラート機能がサポートされました
はじめに
こんにちは。中川です。
Amazon Elasticsearch Service で、アラート機能がサポートされましたので、試してみました。
Amazon Elasticsearch Service でイベント監視およびアラートのサポートを開始
先月、AWS は Elasticearch の新しいディストリビューション"Open Distro for Elasticsearch"を公開しました。
このディストリビューションによって追加される機能が、今回のアップデートで追加された形になります。
ディストリビューションの詳細については、以下の記事を参考にしていただければと思います。
AWSがElasticsearchの新ディストリビューションをApacheライセンスで公開
なお、アラート機能を利用するにあたって、以下の点には注意しましょう。
- Elasticsearchのバージョンが 6.2 以上であること(本ブログでも6.2を使用)
- ソフトウェアリリースは、R20190221以上であること
- SNS連携はOpen Distro for Elasticsearchには無く、Amazon Elasticsearch Serviceの独自機能であること
やってみた
環境
構成はこのようになっており、Web サーバーのアクセスログを Elasticsearch に収集しています。
今回は、HTTP ステータスコードが 200 以外で、一定回数発生した場合に、メール通知します。
SNSを作成
通知するための SNS トピックを作成します。
メールで通知するため、ここでは Email を選択しています。
IAMロールを作成
Elaticsearch が SNS を使用するため、以下のロールを作成します。
ポリシーは、公式ドキュメントに記載されています。
ロール
ポリシー
信頼関係
通知先を設定
いよいよ Elasticsearch の設定に入っていきます。
まず、通知先の設定をします。
Alerting > Destinationsと選択し、[Add destionation]をクリックします。
各項目を入力し、[Create]をクリックします。
監視を設定
続いて監視の設定をします。
Monitorsを選択し、[Create monitor]をクリックします。
監視設定の項目を入力します。
ここでは監視間隔を 5 分で設定しています。
監視定義を設定します。
今回はクエリを使用して定義をするため、Define using extraction queryを選択し、Index ではアクセスログのインデックスを指定しています。
クエリでは、ステータスコードが 200 以外であることをカウント対象にしています。
使用したクエリは以下のとおりです。
{
"size": 0,
"query": {
"bool": {
"filter": [
{
"range": {
"@timestamp": {
"from": "{{period_end}}||-5m",
"to": "{{period_end}}",
"include_lower": true,
"include_upper": true,
"format": "epoch_millis",
"boost": 1
}
}
}
],
"must_not": [
{
"match": {
"response": "200"
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
},
"aggregations": {}
}
トリガーを設定
最後にトリガーの設定です。
トリガー名と重要度を設定します。
上のExtraction query responseでは、設定時におけるクエリ結果が表示されており、下のTrigger conditionでトリガーの条件を設定しています。
ここでは、10 回以上ヒットした場合を条件にしています。
さきほど設定した通知先をトリガーに設定し、[Create]をクリックすると設定は完了になります。
動作確認
Web サーバーで 504 エラーを返しました。
メールが届くことを確認できました。
さいごに
Elasticsearch 上でログ監視とアラートをやってみました。
以前は、Elasticsearch にログを収集していても、監視は他のサーバーやサービスで実装する必要がありました。
Elasticsearch では、検索クエリを用いた複雑な監視ができたり、他のデータストアを使用しない分のコスト削減をできるので、ログ監視の選択肢は増えたと思います。
Amazon Elasticsearch Service は、今後もますます機能追加が期待できるため、引き続き注目していきたいです。